gsk: Fix Vulkan validation errors for image upload
authorMatthias Clasen <mclasen@redhat.com>
Tue, 26 Sep 2017 22:18:31 +0000 (18:18 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 26 Sep 2017 22:18:31 +0000 (18:18 -0400)
I've finally figured out the right combination of src and dest
stage and access flags to make all validation warnings go away.
This commit only fixes the direct upload code.

gsk/gskvulkanimage.c

index d09a109e52f9ca76a7ead2ca587bce4eacd96bc3..1eb9c3a96e7a859ce004cecc0b974f1ab6330b7a 100644 (file)
@@ -148,12 +148,8 @@ gsk_vulkan_uploader_upload (GskVulkanUploader *self)
 
       command_buffer = gsk_vulkan_command_pool_get_buffer (self->command_pool);
       vkCmdPipelineBarrier (command_buffer,
-#if 0
-                            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-#endif
-                            VK_PIPELINE_STAGE_TRANSFER_BIT,
-                            VK_PIPELINE_STAGE_TRANSFER_BIT,
+                            VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
+                            VK_PIPELINE_STAGE_HOST_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT,
                             0,
                             0, NULL,
                             self->before_buffer_barriers->len, (VkBufferMemoryBarrier *) self->before_buffer_barriers->data,
@@ -168,12 +164,8 @@ gsk_vulkan_uploader_upload (GskVulkanUploader *self)
     {
       VkCommandBuffer command_buffer = gsk_vulkan_uploader_get_copy_buffer (self);
       vkCmdPipelineBarrier (command_buffer,
-#if 0
-                            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-                            VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
-#endif
-                            VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
-                            VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
+                            VK_PIPELINE_STAGE_HOST_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT,
+                            VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
                             0,
                             0, NULL,
                             self->after_buffer_barriers->len, (VkBufferMemoryBarrier *) self->after_buffer_barriers->data,